package com.zhishu.generator;

import cn.hutool.core.io.FileUtil;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.*;

/**
 * @Author: 止束
 * @Version: 1.0
 * @DateTime: 2025/1/9 13:40
 * @Description: 动态文件生成器
 */
public class DynamicGenerator {
    public static void doGenerate(String inputPath, String outputPath, Object model) throws IOException, TemplateException {
        // new 出 Configuration 对象，参数为 FreeMarker 版本号
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);

        File templateDir = new File(inputPath).getParentFile();
        // 指定模板文件所在的路径
        configuration.setDirectoryForTemplateLoading(templateDir);

        // 设置模板文件使用的字符集
        configuration.setDefaultEncoding("utf-8");

        configuration.setNumberFormat("0.######");

        // 创建模板对象，加载指定模板
        String templateName = new File(inputPath).getName();
        Template template = configuration.getTemplate(templateName);

        //如果文件不存在则创建目录
        if (!FileUtil.exist(outputPath)) {
            FileUtil.touch(outputPath);
        }

        //在根目录生成文件
        //指定要生成的路径和文件名
        //Writer out = new FileWriter(outputPath);
        OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(outputPath), "UTF-8");
        template.process(model, out);

        // 生成文件后别忘了关闭哦
        out.close();
    }
}
